/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DTD.Validador;

import DTD.DTDTool;
import Utilidades.StrOp;

/**
 *
 * @author Administrador
 */
public class ValidadorSintaxisLista {

    private ValidadorSintaxisComponente validador;

    public ValidadorSintaxisLista() {
        this.validador = new ValidadorSintaxisComponente();
    }

    public boolean validar (String aValidar) {
        boolean resultado = true;
        String aModificar = extraerCaracteres(aValidar);

        if (aModificar == null) {
            resultado = false;
        }
        else {
            String[] array = StrOp.separar(aModificar, ",", "", "", '(', ')');
            if (validarSeparacion(aModificar, array.length - 1) == false) {
                    resultado = false;
            }
            for (int i = 0; resultado && i < array.length; i++) {
                String string = array[i];
                if (validador.Verify(string) == false) {
                    resultado = false;
                }
            }
        }
        return resultado;
    }

    private String extraerCaracteres(String aValidar) {
        String resultado = null;
        int iInicio = 1;
        int iFinal = aValidar.length() - 1;
        char ch = aValidar.charAt(aValidar.length() - 1);

        if (ch == '*' || ch == '+' || ch == '?') {
            resultado = aValidar.substring(iInicio, iFinal - 1);
        }
        else if (ch == ')') {
            resultado = aValidar.substring(iInicio, iFinal);
        }
        return resultado;
    }

    private boolean validarSeparacion(String str, int i) {
        return DTDTool.getCantidadSalidasPar(str, ',') == i;
    }
}
